package interfaz;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Vector;

import javax.swing.JFrame;

import frsf.cidisi.exercise.idemiatp.situationCalculus.Grafo;

@SuppressWarnings("serial")
public class VentanaInicio extends JFrame{

public static final int ANCHO = 60;
public static final int ALTO = 60;
	
Grafo grafo;	
Vector<CiudadGrafica> ciudades;
Vector<String> visitadas;



public VentanaInicio(Grafo gr,Vector<String> c ){
	
	grafo = gr;
	ciudades = new Vector<CiudadGrafica>();
	String nombre = "";
	visitadas = c;
	
	
	
	
	for(int i=0; i<gr.getCiudades().size(); i++){
	nombre = gr.getCiudades().elementAt(i).getNombre();	
		
	if(nombre == "ergintone"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 400,50));
	}
	if(nombre == "aragaey"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 600,150));
	}
	if(nombre == "peregaey"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 420,150));
	}
	if(nombre == "bulovoe"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 200,120));
	}
	if(nombre == "icaedur"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 100,200));
	}
	if(nombre == "vinizaile"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 400,300));
	}
	if(nombre == "bresol"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 600,300));
	}
	if(nombre == "cabe"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 300,400));
	}
	if(nombre == "mixocu"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 100,400));
	}
	if(nombre == "ase"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 100,500));
	}
	if(nombre == "cenede"){
		this.ciudades.addElement(new CiudadGrafica(nombre, 300,550));
	}
		
		
	}
	
	for(int j=0; j< this.ciudades.size(); j++){
		
		for(int i=0; i<this.visitadas.size();i++){
			
			if(this.ciudades.elementAt(j).getNombre() == this.visitadas.elementAt(i)){
				ciudades.elementAt(j).setVisitada(true);
				ciudades.elementAt(j).vecesVisitada ++;
				}

		}
		
	}
	
	
	
	
	
	setVisible(true);
	
}
	
	
	public void paint(Graphics g) {
		super.paint(g);

		this.setExtendedState(JFrame.MAXIMIZED_BOTH);

		dibujar(g);
		dibujarVisitadas(g);
		dibujarRutas(g);

	}
	
	
	private void dibujarRutas(Graphics g) {
		
		Graphics2D g2d = (Graphics2D) g;
		g2d.setStroke(new BasicStroke(1));
		g2d.setColor(Color.GRAY);
		
		g2d.drawLine(this.buscarDeLista("ergintone").x+30, this.buscarDeLista("ergintone").y+30, this.buscarDeLista("aragaey").x+30, this.buscarDeLista("aragaey").y+30);
		g2d.drawLine(this.buscarDeLista("ergintone").x+30, this.buscarDeLista("ergintone").y+30, this.buscarDeLista("peregaey").x+30, this.buscarDeLista("peregaey").y+30);
		g2d.drawLine(this.buscarDeLista("ergintone").x+30, this.buscarDeLista("ergintone").y+30, this.buscarDeLista("bulovoe").x+30, this.buscarDeLista("bulovoe").y+30);
		g2d.drawLine(this.buscarDeLista("aragaey").x+30, this.buscarDeLista("aragaey").y+30, this.buscarDeLista("bresol").x+30, this.buscarDeLista("bresol").y+30);
		g2d.drawLine(this.buscarDeLista("peregaey").x+30, this.buscarDeLista("peregaey").y+30, this.buscarDeLista("vinizaile").x+30, this.buscarDeLista("vinizaile").y+30);
		g2d.drawLine(this.buscarDeLista("bulovoe").x+30, this.buscarDeLista("bulovoe").y+30, this.buscarDeLista("icaedur").x+30, this.buscarDeLista("icaedur").y+30);
		g2d.drawLine(this.buscarDeLista("icaedur").x+30, this.buscarDeLista("icaedur").y+30, this.buscarDeLista("vinizaile").x+30, this.buscarDeLista("vinizaile").y+30);
		g2d.drawLine(this.buscarDeLista("bresol").x+30, this.buscarDeLista("bresol").y+30, this.buscarDeLista("vinizaile").x+30, this.buscarDeLista("vinizaile").y+30);
		g2d.drawLine(this.buscarDeLista("vinizaile").x+30, this.buscarDeLista("vinizaile").y+30, this.buscarDeLista("mixocu").x+30, this.buscarDeLista("mixocu").y+30);
		g2d.drawLine(this.buscarDeLista("vinizaile").x+30, this.buscarDeLista("vinizaile").y+30, this.buscarDeLista("cabe").x+30, this.buscarDeLista("cabe").y+30);
		g2d.drawLine(this.buscarDeLista("mixocu").x+30, this.buscarDeLista("mixocu").y+30, this.buscarDeLista("ase").x+30, this.buscarDeLista("ase").y+30);
		g2d.drawLine(this.buscarDeLista("ase").x+30, this.buscarDeLista("ase").y+30, this.buscarDeLista("cenede").x+30, this.buscarDeLista("cenede").y+30);
		
		
		
	}

	

	public void dibujar(Graphics g){
		
		for(CiudadGrafica cv : ciudades){
			cv.dibujar(g);
		}
			
			
	}
	
public void dibujarVisitadas(Graphics g){
		String cadena = "";
		for(int i=0; i<this.visitadas.size(); i++){
			cadena =  visitadas.elementAt(i);
			buscarDeLista(cadena).dibujarVisita(g, i);
		}
			
			
	}
	
public CiudadGrafica buscarDeLista(String s){
	for(CiudadGrafica cg : this.ciudades){
		if(cg.nombre.equals(s))
			return cg;
	}
	return null;
}

}
